package pe.com.cotelasa.seguridad.controlador;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import pe.com.cotelasa.common.controlador.MBGenerico;
import pe.com.cotelasa.scp.controlador.comando.IComando;
import pe.com.cotelasa.scp.dominio.common.URLPaginacion;
import pe.com.cotelasa.scp.dominio.excepcion.ModelExcepcion;
import pe.com.cotelasa.scp.seguridad.modelo.ContracenaModel;
import pe.com.cotelasa.seguridad.controlador.backingBean.BKContracena;
import pe.com.cotelasa.seguridad.controlador.backingBean.BKSession;

@Controller("MBContracena")
@Scope("prototype")
public class MBContracena extends MBGenerico {

    private static Logger logger = Logger.getLogger(MBContracena.class);
    @Autowired
    public BKContracena bkContracena;
    private IComando comando;
    @Autowired
    private ContracenaModel contracenaModel;
    @Autowired
    private BKSession bkSession;

    public MBContracena() {
    }

    public void mostrarPantalla() {
        logger.info("Mostrar Pantalla");
    }

    public String guardar() {
        try {
            boolean flag = contracenaModel.validarContracenaActual(bkSession.getUsuario().getId(), this.bkContracena.getContracenaActual());
            if (flag) {
                contracenaModel.guardarCambioContracena(bkSession.getUsuario().getId(), this.bkContracena.getNuevaContracena());
                mostrarMensaje(serviceProperties.getProperty("cotelasa.message.guardar"));
            } else {
                mostrarError(serviceProperties.getProperty("cotelasa.message.errorContracenaActual"));
            }
        } catch (ModelExcepcion e) {
            mostrarError(serviceProperties.getProperty("cotelasa.message.errorGuardar"));
            contracenaModel.enviarCorreoError(e, e.getMensaje());
            logger.error(e.getMensaje(), e);
        }
        return "";
    }

    public String cancelar() {
        logger.info("Cancelar");
        return URLPaginacion.Seguridad.URL_HOME;
    }

    public IComando getComando() {
        return comando;
    }

    public void setComando(IComando comando) {
        this.comando = comando;
    }
}
